// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "net/quic/test_tools/quic_flow_controller_peer.h"

#include <list>

#include "net/quic/quic_flow_controller.h"
#include "net/quic/quic_protocol.h"

namespace net {
namespace test {

    // static
    void QuicFlowControllerPeer::SetSendWindowOffset(
        QuicFlowController* flow_controller,
        QuicStreamOffset offset)
    {
        flow_controller->send_window_offset_ = offset;
    }

    // static
    void QuicFlowControllerPeer::SetReceiveWindowOffset(
        QuicFlowController* flow_controller,
        QuicStreamOffset offset)
    {
        flow_controller->receive_window_offset_ = offset;
    }

    // static
    void QuicFlowControllerPeer::SetMaxReceiveWindow(
        QuicFlowController* flow_controller,
        QuicByteCount window_size)
    {
        flow_controller->receive_window_size_ = window_size;
    }

    // static
    QuicStreamOffset QuicFlowControllerPeer::SendWindowOffset(
        QuicFlowController* flow_controller)
    {
        return flow_controller->send_window_offset_;
    }

    // static
    QuicByteCount QuicFlowControllerPeer::SendWindowSize(
        QuicFlowController* flow_controller)
    {
        return flow_controller->SendWindowSize();
    }

    // static
    QuicStreamOffset QuicFlowControllerPeer::ReceiveWindowOffset(
        QuicFlowController* flow_controller)
    {
        return flow_controller->receive_window_offset_;
    }

    // static
    QuicByteCount QuicFlowControllerPeer::ReceiveWindowSize(
        QuicFlowController* flow_controller)
    {
        return flow_controller->receive_window_offset_ - flow_controller->highest_received_byte_offset_;
    }

    // static
    QuicByteCount QuicFlowControllerPeer::WindowUpdateThreshold(
        QuicFlowController* flow_controller)
    {
        return flow_controller->WindowUpdateThreshold();
    }

} // namespace test
} // namespace net
